package com.zjsru.plan2025.oneday;

/**
 * 1963. 使字符串平衡的最小交换次数
 * @Author: cookLee
 * @Date: 2025-03-17
 */
public class MinSwaps {

    /**
     * 主
     * \
     * 字符串是一个空字符串，或者
     * 字符串可以记作 AB ，其中 A 和 B 都是 平衡字符串 ，或者
     * 字符串可以写成 [C] ，其中 C 是一个 平衡字符串 。
     * \
     * 输入：s = "][]["
     * 输出：1
     * 解释：交换下标 0 和下标 3 对应的括号，可以使字符串变成平衡字符串。
     * 最终字符串变成 "[[]]" 。
     * \
     * 输入：s = "]]][[["
     * 输出：2
     * 解释：执行下述操作可以使字符串变成平衡字符串：
     * - 交换下标 0 和下标 4 对应的括号，s = "[]][][" 。
     * - 交换下标 1 和下标 5 对应的括号，s = "[[][]]" 。
     * 最终字符串变成 "[[][]]" 。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        MinSwaps minSwaps = new MinSwaps();
        String s = "][][";
        System.out.println(minSwaps.minSwaps(s));
    }

    public int minSwaps(String s) {
        int ans = 0;
        int count = 0;
        for (char b : s.toCharArray()) {
            if (b == '[') {
                count++;
            } else if (count > 0) {
                count--;
            } else {
                //c == 0
                ans++;
                // s[i] 变成左括号，c 加一
                count++;
            }
        }
        return ans;
    }

}
